package cn.zyq.ykb.service.task;

import cn.zyq.ykb.beans.task.TaskOrder;
import cn.zyq.ykb.beans.user.User;
import cn.zyq.ykb.system.common.PageParam;
import com.github.pagehelper.PageInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 任务-订单Service接口
 *
 * @author SystemAuth
 * @date 2023-05-25
 */
public interface TaskOrderService {
    /**
     * 查询任务-订单
     *
     * @param taskOrderID 任务-订单主键
     * @return 任务-订单
     */
    TaskOrder selectTaskOrderByTaskOrderID(Integer taskOrderID);

    /**
     * 查询任务-订单
     *
     * @param serviceID 任务-订单业务ID
     * @return 任务-订单
     */
    TaskOrder selectTaskOrderByServiceID(String serviceID);

    /**
     * 查询任务-订单列表
     *
     * @param pageParam
     * @return 任务-订单集合
     */
    PageInfo<TaskOrder> selectTaskOrderList(PageParam pageParam);

    /**
     * 查询任务-订单列表
     *
     * @param param
     * @return 任务-订单集合
     */
    List<TaskOrder> selectTaskOrderList(TaskOrder param);

    /**
     * 新增任务-订单
     *
     * @param param 任务-订单
     * @return 结果
     */
    int insertTaskOrder(TaskOrder param);

    /**
     * 修改任务-订单
     *
     * @param param 任务-订单
     * @return 结果
     */
    int updateTaskOrder(TaskOrder param);

    /**
     * 批量删除任务-订单
     *
     * @param taskOrderIDs 需要删除的任务-订单主键集合
     * @return 结果
     */
    int deleteTaskOrderByTaskOrderIDs(Integer[] taskOrderIDs);

    /**
     * 删除任务-订单信息
     *
     * @param taskOrderID 任务-订单主键
     * @return 结果
     */
    int deleteTaskOrderByTaskOrderID(Integer taskOrderID);

    /**
     * 支付任务总金额
     * @param param
     * @param request
     * @param loginUser
     * @return
     */
    TaskOrder payTask(TaskOrder param, HttpServletRequest request, User loginUser);

    /**
     * 校验订单是否过期
     * @param serviceID
     */
    void checkExpire(String serviceID);

    void reloadStateQueue();


}
